/**
 * NSArray+GTExtension.m
 *
 * The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License");
 * you may not use this file except in compliance with the License. You may obtain a copy of the License 
 * at http://www.mozilla.org/MPL/
 * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
 * either express or implied. See the License for the specific language governing rights and limitations 
 * under the License.
 *
 * The Original Code is gcast-toolbox4iphone.
 *
 * The Initial Developers of the Original Code is Giannandrea Castaldi.
 */
#import "NSArray+GTExtension.h"


@implementation NSArray (GTExtension)

- (BOOL)isEqualToArray:(NSArray *)anotherArray comparingElementsWith:(SEL)selector {
  BOOL result = TRUE;
  if ([self count] == [anotherArray count]) {
    for (int i = 0; i < self.count && result; i++) {
      NSComparisonResult comparisonResult = (NSComparisonResult)[[self objectAtIndex:i] performSelector:selector withObject:[anotherArray objectAtIndex:i]];
      result = comparisonResult == NSOrderedSame;
    }
  }
  else {
    result = FALSE;
  }
  
  return result;
}

- (id)firstObjectWithReturnValueEqualsTo:(id)valueToCompare callingSelector:(SEL)aSelector {
  id result = nil;
  for (id anArrayElement in self) {
    if ([[anArrayElement performSelector:aSelector] isEqual:valueToCompare]) {
      result = anArrayElement;
    }
  }
  return result;
}


@end

@implementation NSMutableArray (GTExtension)

- (void)addObjectIfNotPresent:(id)anObject {
  if (![self containsObject:anObject]) {
    [self addObject:anObject];
  }
}

@end
